#include <iostream>

struct ListNode
{
    int val;
    ListNode*next;
};

void add_node(int val,ListNode*&head)
{
    ListNode*node = new ListNode;
    node->next = nullptr;
    node->val = val;

    if (!head)
    {
        head = node;
    }

    ListNode*temp = head;
    while (temp->next)
    {
        temp = temp->next;
    }

    temp->next = node;
}

void print_list(ListNode*head)
{
    ListNode*temp = head;
    while(temp)
    {
        std::cout<<temp->val<<std::endl;
        temp = temp->next;
    }
}

// 
int main()
{
    // 构造两个含有公共节点的单链表
    // 

    ListNode* head1 = new ListNode;
    head1->val = 1;

    ListNode*head2 = new ListNode;
    head2->val = 1;

    for (int i = 0;i < 10;i++)
    {
        add_node(i+2,head1);
    }

    // 手动构造公共节点
    ListNode*temp = head2;
    for (int i = 0;i < 6;i++)
    {
        add_node(i+2,head2);
    }

    //
    while (temp->next) 
    {
        temp = temp->next;
    }

    temp->next = head1->next;

    // 测试看看
    print_list(head1);
    print_list(head2);

    return 0;
}